/**
 * 
 */
package sv.gob.mh.dgii.model;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @author nalopez
 *
 */
@Entity
@Table(name = "ED_CTRL_ARCHIVOS_DET", schema = "EDADEPUDOC")
public class EdCtrlArchivosDet implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -5590754106238647579L;
	
	private Long ictrlarchivos;
	private String snombreArchivo;
	private Integer mestado;
	private EdDeclaraciones edDeclaraciones;
	private String sremoteAddr;
	private String susuario;
	private Date fhingreso;
	private String nit;
	private Date fpdeclaracion;
	private String nfolio;
	private Integer nregCorrectos;
	private Integer nregIncorrectos;
	private String nformulario;
	private EdOriginalArchivoDet edOriginalArchivoDet;
	private Long ictrlfenix;
	private BigInteger trngub;
	private Set<EdDetalleArchivosDet> edDetalleArchivosDets = new HashSet<EdDetalleArchivosDet>(0);
	

	/**
	 * 
	 */
	public EdCtrlArchivosDet() {
	}
	
	public EdCtrlArchivosDet(Long ictrlarchivos) {
		this.ictrlarchivos = ictrlarchivos;
	}
	
	public EdCtrlArchivosDet(Long ictrlarchivos, String snombreArchivo,
			Integer mestado, EdDeclaraciones edDeclaraciones, String nit,
			Date fpdeclaracion, String nfolio, Integer nregCorrectos,
			Integer nregIncorrectos,
			Set<EdDetalleArchivosDet> edDetalleArchivosDets, String nformulario, BigInteger trngub) {
		this.ictrlarchivos = ictrlarchivos;
		this.snombreArchivo = snombreArchivo;
		this.mestado = mestado;
		this.edDeclaraciones = edDeclaraciones;
		this.nit = nit;
		this.fpdeclaracion = fpdeclaracion;
		this.nfolio = nfolio; 
		this.nregCorrectos = nregCorrectos;
		this.nregIncorrectos = nregIncorrectos;
		this.nformulario = nformulario;
		this.edDetalleArchivosDets = edDetalleArchivosDets;
		this.trngub = trngub;
	}

	@Id
	@Column(name = "I_CTRLARCHIVOS", unique = true, nullable = false, insertable = true, updatable = true, precision = 18, scale = 0)
	public Long getIctrlarchivos() {
		return ictrlarchivos;
	}


	public void setIctrlarchivos(Long ictrlarchivos) {
		this.ictrlarchivos = ictrlarchivos;
	}

	@Column(name = "S_NOMBRE_ARCHIVO", unique = false, nullable = false, insertable = true, updatable = true, length = 50)
	public String getSnombreArchivo() {
		return snombreArchivo;
	}


	public void setSnombreArchivo(String snombreArchivo) {
		this.snombreArchivo = snombreArchivo;
	}

	@Column(name = "M_ESTADO", unique = false, nullable = true, insertable = true, updatable = true, precision = 10, scale = 0)
	public Integer getMestado() {
		return mestado;
	}


	public void setMestado(Integer mestado) {
		this.mestado = mestado;
	}


	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "C_DECLARACION", unique = false, nullable = true, insertable = true, updatable = true)
	public EdDeclaraciones getEdDeclaraciones() {
		return edDeclaraciones;
	}


	public void setEdDeclaraciones(EdDeclaraciones edDeclaraciones) {
		this.edDeclaraciones = edDeclaraciones;
	}

	@OneToMany( fetch = FetchType.LAZY, mappedBy = "edCtrlArchivosDet" )
	public Set<EdDetalleArchivosDet> getEdDetalleArchivosDets() {
		return edDetalleArchivosDets;
	}

	public void setEdDetalleArchivosDets(
			Set<EdDetalleArchivosDet> edDetalleArchivosDets) {
		this.edDetalleArchivosDets = edDetalleArchivosDets;
	}

	@Column(name = "S_REMOTE_ADDR", unique = false, nullable = true, insertable = true, updatable = true, length = 12)
	public String getSremoteAddr() {
		return sremoteAddr;
	}

	public void setSremoteAddr(String sremoteAddr) {
		this.sremoteAddr = sremoteAddr;
	}
	
	@Column(name = "S_USUARIO", unique = false, nullable = true, insertable = true, updatable = true, length = 50)
	public String getSusuario() {
		return susuario;
	}

	public void setSusuario(String susuario) {
		this.susuario = susuario;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "FH_INGRESO", unique = false, nullable = false, insertable = true, updatable = true, length = 7)
	public Date getFhingreso() {
		return fhingreso;
	}

	public void setFhingreso(Date fhingreso) {
		this.fhingreso = fhingreso;
	}

	@Column(name = "NIT", unique = false, nullable = true, insertable = true, updatable = true, length = 14)
	public String getNit() {
		return nit;
	}

	public void setNit(String nit) {
		this.nit = nit;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FP_DECLARACION", unique = false, nullable = true, insertable = true, updatable = true, length = 7)
	public Date getFpdeclaracion() {
		return fpdeclaracion;
	}

	public void setFpdeclaracion(Date fpdeclaracion) {
		this.fpdeclaracion = fpdeclaracion;
	}

	@Column(name = "N_FOLIO", unique = false, nullable = true, insertable = true, updatable = true, length = 14)
	public String getNfolio() {
		return nfolio;
	}

	public void setNfolio(String nfolio) {
		this.nfolio = nfolio;
	}

	@Column(name = "N_REG_CORRECTOS", unique = true, nullable = true, insertable = true, updatable = true, precision = 18, scale = 0)
	public Integer getNregCorrectos() {
		return nregCorrectos;
	}

	public void setNregCorrectos(Integer nregCorrectos) {
		this.nregCorrectos = nregCorrectos;
	}

	@Column(name = "N_REG_INCORRECTOS", unique = true, nullable = true, insertable = true, updatable = true, precision = 18, scale = 0)
	public Integer getNregIncorrectos() {
		return nregIncorrectos;
	}

	public void setNregIncorrectos(Integer nregIncorrectos) {
		this.nregIncorrectos = nregIncorrectos;
	}
	
	@Column(name = "N_FORMULARIO", unique = false, nullable = true, insertable = true, updatable = true, length = 3)	
    public String getNformulario() {
		return nformulario;
	}

	public void setNformulario(String nformulario) {
		this.nformulario = nformulario;
	}

	@OneToOne(cascade = CascadeType.ALL)
    @PrimaryKeyJoinColumn
	public EdOriginalArchivoDet getEdOriginalArchivoDet() {
		return edOriginalArchivoDet;
	}

	public void setEdOriginalArchivoDet(EdOriginalArchivoDet edOriginalArchivoDet) {
		this.edOriginalArchivoDet = edOriginalArchivoDet;
	}
	
	@Column(name = "I_CTRLFENIX", unique = false, nullable = true, insertable = true, updatable = true, precision = 18, scale = 0)
	public Long getIctrlfenix() {
		return ictrlfenix;
	}

	public void setIctrlfenix(Long ictrlfenix) {
		this.ictrlfenix = ictrlfenix;
	}
	
	@Column(name = "TRN_GUB", unique = true, nullable = true, insertable = true, updatable = true, precision = 28, scale = 0)
	public BigInteger getTrngub() {
		return trngub;
	}
	
	public void setTrngub(BigInteger trngub) {
		this.trngub = trngub;
	}	

}
